FREQ is an internal device that allows you to measure the frequency of a digital signal. Also integrates a pulse counter one way a first-order low-pass digital filter on the measure, a function of scaling and a duty cycle.
The main features of the device are:
In order to use the device you must declare it in the appropriate INTDEVICE section of the configuration unit.
;--------------------------------- ; Internal device declaration ;--------------------------------- INTDEVICE ... <device_name> FREQ TCamp IntL
Where:
| <device_name> | the name given to the device |
| FREQ | keyword that identifies the FREQ device |
| TCamp | sample time device in milliseconds (1÷250) |
| IntL | interrupt line associated to digital input to which is applied the signal to monitor |
![]() | Attention: All fields of the declaration are necessary and must be present on the same line. Set “X.X” or “X” If a resource is not available or cannot be used. Disable a resource means disable all functionality of the device using it. |
|---|
The “antiglitch filter” block execute a digital filtering on the input signal for troubleshooting. It samples the input signal at regular intervals and determines the exit status by checking the status of the majority of the samples. The size of the filter depends on a parameter of the QMOVE system (“QMOVE:sys004” system variable).
![]() | The existence of the “antiglitch filter” block and it's features depend on the product that you are using. Consult the documentation relating to the product for more information. |
|---|
The “edge detect” block capture the output signal from the antiglitch filter and measuring the time between two consecutive fronts to get the frequency measurement. The rising or falling is selected using capture parameter. The frqmin parameter determines the maximum time after which the block value becomes zero.
The “Edge counter” block creates a counter of faces captured by “edge detect” block.
Il blocco “Upper limiter”, come dice la parola stessa, limita i valori di uscita del blocco “edge detect” fino a frqmax.
The “scaling” block execute mathematical operations of multiplication, division and sum, of the block output “upper limiter” value with the scaleA, scaleB and scaleC parameters to get the value measured (outUm) in the desired entity.
The formula to get the measured value is:
outUm = (outbit * scaleA / scaleB) + scaleC
The “Low pass filter” block execute a digital filter of the first order (type of the classic RC filter) on the measured value. The time constant of the filter can be set using tfilter parameter.
| Name | Dimension | Default value | Access type | Unit of measure | Valid Range | Write conditions | Description |
|---|---|---|---|---|---|---|---|
| frqmax | Long | Retentive | RW | Hz/100 or Hz/1000 | 0÷2147483647 | - | Maximum frequency Is the maximum value that can take outfrq. PFor higher frequency signals to frqmax, outfrq is set equal to frqmax. |
| frqmin | Long | Retentive | RW | Hz/100 or Hz/1000 | 0÷2147483647 | - | Minimum frequency Is the minimum detectable frequency from the device. For lower frequencies, the output of the “edge detect” block worth zero. ![]() frqmin It also affects the time limit beyond which no input signal is detected; for example, by setting frqmin equal to 1Hz, the device detects no signal and then poses to zero outfrq after 1 sec. By setting, frqmin equal to 0.01 Hz the lack of the signal will be detected after 100 sec. By setting frqmin equal to 0 is how to set 0.01Hz if outfrq it is expressed in hundredths of hertz or 0.001Hz if outfrq is expressed in thousandths of hertz |
| capture | Byte | Retentive | RW | - | 0÷5 | - | Capture mode and resolution signal frequency measurement Defines the signal capture mode (front and frequency/duty) and resolution of frequency measurement (hundredths or thousandths of an hertz). 0 i blocchi “edge detect” e “edge counter” sono disabilitati quindi il device fornisce il valore di outfrq sempre uguale a zero mentre outcnt non si incrementa più.1 il blocco “edge detect” cattura il fronte di discesa del segnale di ingresso ed il valore di outfrq è espresso in centesimi di Hertz. Il blocco “edge counter”, altresì, incrementa il suo valore di uscita outcnt sul fronte di discesa del segnale di ingresso. 2 il blocco “edge detect” cattura il fronte di salita del segnale di ingresso ed il valore di outfrq è espresso in centesimi di Hertz. Il blocco “edge counter”, altresì, incrementa il suo valore di uscita outcnt sul fronte di salita del segnale di ingresso. 3 il blocco “edge detect” cattura il fronte di discesa del segnale di ingresso ed il valore di outfrq è espresso in millesimi di Hertz. Il blocco “edge counter”, altresì, incrementa il suo valore di uscita outcnt sul fronte di discesa del segnale di ingresso. 4 il blocco “edge detect” cattura il fronte di salita del segnale di ingresso ed il valore di outfrq è espresso in millesimi di Hertz. Il blocco “edge counter”, altresì, incrementa il suo valore di uscita outcnt sul fronte di salita del segnale di ingresso. 5 il blocco “edge detect” cattura entrambi i fronti del segnale di ingresso e fornisce sul parametro outfrq il valore del duty cycle in parti per 10000 (es: 5000 indica il 50.00 %). |
| scaleA | Long | Ritentivo | RW | - | -2147483648÷2147483647 | - | Coefficiente A nella funzione di scaling È il parametro per il quale viene moltiplicato il valore della frequenza rilevato dal blocco “edge detect” nella funzione di scaling. Impostando il parametro a 0 il valore misurato avrà sempre valore 0. |
| scaleB | Long | Ritentivo | RW | - | -2147483648÷2147483647 | - | Coefficiente B nella funzione di scaling È il parametro per il quale viene diviso il valore della frequenza rilevato dal blocco “edge detect” nella funzione di scaling. Impostando il parametro a 0 il valore misurato avrà sempre valore 0. |
| scaleC | Long | Ritentivo | RW | - | -2147483648÷2147483647 | - | Coefficiente C nella funzione di scaling È il parametro che viene sommato al risultato ottenuto moltiplicando il valore valore della frequenza rilevata dal blocco “edge detect” moltiplicato per il rapporto tra i parametri scaleA e scaleB della funzione di scaling. |
| tfilter | Word | Ritentivo | RW | ms | 0÷32767 | - | Costante di tempo del filtro Costante di tempo. ![]() nel caso in cui tfilter sia minore o uguale del tempo di campionamento del device viene disattivato il filtro ed il parametro outUmF viene aggiornato con lo stesso valore di outUm. |
| par01 | Long | Ritentivo | RW | - | -2147483648÷2147483647 | - | Parametro generico Parametro disponibile per future implementazioni. |
| par02 | Long | Ritentivo | RW | - | -2147483648÷2147483647 | - | Parametro generico Parametro disponibile per future implementazioni. |
| outfrq | Long | - | R | Hz/100 oppure Hz/1000 | 0÷frqmax | - | Frequenza rilevata È il valore di uscita del blocco “edge detect”. |
| outUm | Long | - | R | - | - | - | Valore misurato È il valore della misura cioè il valore di frequenza rilevata passato per la funzione di scaling. |
| outUmF | Long | - | R | - | - | - | Valore misurato filtrato È il valore della misura dopo l'applicazione del filtro digitale passa basso. |
| outcnt | Long | - | RW | - | - | - | Contatore impulsi È il valore di uscita del blocco “edge counter” e cioè il numero di fronti di salita o discesa (a seconda del parametro capture) rilevati dal blocco “edge detect”. |
| outvar | Long | - | RW | - | - | - | Variabile generica Parametro attualmente non implementato. |
| errcode | Byte | 0 | R | - | -128÷127 | - | Codice di identificazione errore Indica il tipo di errore intervenuto nel device. Il codice è valido solo se st_error = 1. Per ulteriori informazioni consultare il capitolo dedicato |
| errvalue | Byte | 0 | R | - | -128÷127 | - | Codice di identificazione della causa dell'errore Indica la causa dell'errore intervenuto nel device. Il codice è valido solo se st_error = 1. Per ulteriori informazioni consultare il capitolo dedicato |
| wrncode | Byte | 0 | R | - | -128÷127 | - | Codice di identificazione warning Indica il tipo di warning intervenuto nel device. Il codice è valido solo se st_warning = 1. Per ulteriori informazioni consultare il capitolo dedicato |
| wrnvalue | Byte | 0 | R | - | -128÷127 | - | Codice di identificazione della causa del warning Indica la causa del warning intervenuto nel device. Il codice è valido solo se st_warning = 1. Per ulteriori informazioni consultare il capitolo dedicato |
| Nome | Valore di default | Descrizione |
|---|---|---|
| st_01 | 0 | Stato input Stato dell'ingresso sorgente (linea d'interrupt o numero frequenzimetro). |
| st_02 | 0 | Stato generico Parametro disponibile per future implementazioni. |
| st_error | 0 | Presenza di un errore Indica lo stato di errore del device, per riconoscere il tipo di errore si deve far riferimento alle variabili errcode ed errvalue: 0: errore non presente, 1: errore presente |
| st_warning | 0 | Presenza di un warning Indica lo stato di warning del device, per riconoscere il tipo di warning si deve far riferimento alle variabili wrncode e wrnalue: 0: warning non presente, 1: warning presente |
| Nome | Condizione | Descrizione |
|---|---|---|
| CMD01 | - | Comando generico Comando disponibile per future implementazioni. |
| CMD02 | - | Comando generico Comando disponibile per future implementazioni. |
| RSERR | - | Reset dello stato di errore Azzera lo stato st_error. |
| RSWRN | - | Reset dello stato di warning Azzera lo stato st_warning. |
Quando il device non riesce ad eseguire le operazioni derivanti da una non corretta programmazione da parte dell'utente segnala questa condizione tramite l'attivazione dello stato st_error. Il device, inoltre, rende disponibili, tramite i valori sui parametri errcode ed errvalue, alcune informazioni per meglio comprendere il tipo di errore e quale condizione l'ha generato. Tali informazioni e lo stato di errore st_error, permangono finché non viene eseguito l'apposito comando RSERR che li cancella.
La seguente tabella specifica i valori assunti da errcode:
| errcode | Descrizione |
|---|---|
| 0 | nessun errore |
| 1 | linea di interrupt associata all'ingresso digitale non supportata dall'hardware |
Per mezzo del parametro errvalue è possibile ottenere informazioni più dettagliate riguardo l'errore.
La seguente tabella specifica i valori assunti da errvalue:
| errvalue | Descrizione |
|---|---|
| 0 | nessuna informazione riguardo l'errore |
Quando i parametri del device vengono programmati con valori fuori range essi non vengono accettati e mantengono il loro valore precedente. Il device segnala questa condizione tramite l'attivazione dello stato st_warning. Il device, inoltre, rende disponibili, tramite i valori sui parametri wrncode ed wrnvalue, alcune informazioni per meglio comprendere il tipo di warning e quale condizione l'ha generato. Tali informazioni e lo stato di warning st_warning, permangono finché non viene eseguito l'apposito comando RSWRN che li cancella.
La seguente tabella specifica i valori assunti da wrncode:
| wrncode | Descrizione |
|---|---|
| 0 | nessun warning |
Per mezzo del parametro wrnvalue è possibile ottenere informazioni più dettagliate riguardo il warning.
La seguente tabella specifica i valori assunti da wrnvalue:
| wrnvalue | Descrizione |
|---|---|
| 0 | nessuna informazione riguardo il warning |